package com.zw.a.basic.a14.demo02_udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

//案例: UDP协议入门, 接收端.
/*
    涉及到的API:
        DatagramSocket类中的方法:
            构造方法:
                public DatagramSocket(int port);
            成员方法:
               public void receive(DatagramPacket dp);     接收数据, 并封装到数据报包中.
               public void close();                        关闭Socket对象.

       DatagramPacket类中的方法
            构造方法:
                public DatagramPacket(byte[] bys, int length);
            成员方法:
                public byte[] getData();        从数据报包中获取数据.
                public int getLength();         返回从数据报包中获取到的具体有效字节数.
 */
public class ReceiveDemo {
    public static void main(String[] args) throws Exception {
        //1. 创建接收端的Socket对象, 指定: 端口号.
        DatagramSocket ds = new DatagramSocket(10086);
        //2. 创建字节数组, 用来接收 发送端发过来的数据.
        byte[] bys = new byte[1024];
        //3. 创建数据报包,封装: 要接收的数据(字节数组形式), 长度
        DatagramPacket dp = new DatagramPacket(bys,bys.length);
        //4. 接收数据(报包)
        ds.receive(dp);

        //5. 从数据报包中获取数据.
        String s = new String(dp.getData(), 0, dp.getLength());
        System.out.println("s: " + s);
        //6. 关闭Socket对象.
        ds.close();
    }
}
